$def with (bbsnames)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      lang="en">
  <head>
    <meta http-equiv="Content-Type"
          content="text/html; charset=utf-8" />
    <title>Bulletin Board Archives</title>
    <link rel="stylesheet" type="text/css" href="/static/styles.css" />
    <link rel="home" href="/" />
  </head>
  <body>
    <h1>Bulletin Board Archives</h1>
    <p>
      Select a BBS to browse its archives:
    </p>
    <ul class="boardnames">
    $if not bbsnames:
        <li>(none)</li>
    $else:
        $for row in bbsnames:
            <li><a href="/$row['id']">$row['title']</a></li>
    </ul>
    <p>
      When prompted to enter a login and password,
      use &ldquo;archives&rdquo; and &ldquo;archives&rdquo;. All pages on
      this site require authentication. This is to keep web crawlers at bay.
    </p>
    <h2>Search</h2>
    <p>
      The current search facility is fairly limited. Multiple keywords per
      field are not supported; the contents of each field are regarded as
      a single phrase.
    </p>
    <form action="/search" method="get" id="search">
      <div class="formbox">
        Search within board:<br />
        <select name="board">
          <option value="">All</option>
          $for row in bbsnames:
              <option value="$row['id']">$row['title']</option>
        </select>
      </div>
      <div class="formbox">
        From:<br />
        <input type="text" name="mfrom" />
      </div>
      <div class="formbox">
        To:<br />
        <input type="text" name="mto" />
      </div>
      <div class="formbox">
        Subject:<br />
        <input type="text" name="subject" />
      </div>
      <div class="formbox">
        Message text:<br />
        <input type="text" name="body" />
      </div>
      <div class="formbox">
        <br />
        <input type="submit" value="Search" />
      </div>
    </form>
    <h2>Upload</h2>
    <p>
      Add to the archives by uploading your own QWK packets.
    </p>
    <p>
      By uploading here, you assert that you have obtained permission to
      publicly archive the messages contained within the packet. Uploaded
      messages cannot be deleted.
    </p>
    <form action="/upload" method="post" enctype="multipart/form-data" id="upload">
      <input type="file" name="qwkfile" />
      <input type="submit" value="Upload" />
    </form>
    <h2>Get Source Code</h2>
    <p>
      The software that powers this website is open source. You may obtain
      a copy of the source code and contribute to it via the
      <a href="http://code.google.com/p/qwkweb/">project page</a>.
    </p>
  </body>
</html>
